#ifndef MASK_HPP
#define MASK_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------
#include "Mask.hpp"
#include "Orientation.hpp"

namespace ImageAnalysis
{
//----------------------------------------------------------------------
// Cette classe correspond aux masque de convolution qui
// sont appliqués aux images.
//----------------------------------------------------------------------
class Mask
{
public:

        //----------------------------------------------------------------------
        // Constructeur
        //----------------------------------------------------------------------
        Mask( int size, Orientation::TDirection direction );

		//----------------------------------------------------------------------
        // Destructeur
        //----------------------------------------------------------------------
        virtual ~Mask();

		//----------------------------------------------------------------------
        // Permet de construire un mask similaire au mask passé en paramètre
		// mais dans la direction souhaité
        //----------------------------------------------------------------------
		static Mask * BuildMask( Mask& originalMask, Orientation::TDirection targetDirection );

		//----------------------------------------------------------------------
        // Permet de construire un mask similaire au mask passé en paramètre
		// mais dans la direction souhaité
        //----------------------------------------------------------------------
    	unsigned int GetMaximumNormalizeCoefficient();

		//----------------------------------------------------------------------
        // Attributs publics du mask
		// - taille du masque (taille du coté du mask)
		// - direction du mask
		// - valeur du mask
		//----------------------------------------------------------------------
		int Size;
		Orientation::TDirection Direction;
		int* Value;

private:
        //----------------------------------------------------------------------
        // Constructeur par copie et oprérateur d'affectation en privée pour
        // interdire leur utilisation
        //----------------------------------------------------------------------
        Mask( const Mask& copy);
        Mask& operator=( const Mask& copy );
};

}
#endif //MASK_HPP
